Load balancing refers to a technique for dividing the amount of work that a server must undertake between two or more servers of the same kind, so that more work is accomplished, and consequently all the clients will be served better (either more rapidly, or in a higher availability ratio). For example, on the Internet, web sites having large amounts of traffic usually use load balancing in order to achieve better performance of their web servers.
Several approaches have been presented for balancing the load between servers. One approach is to randomly pick a server, which relies on chance and can result in the selection of an overloaded server rather than an idle server. In another approach, a load balancer picks an idlest server according to load information reported by the servers. However, in this approach, the load information may be stale due to the lack of real-time information, and result in poor results when an irregular stream of requests arrive. Accordingly, there is a need in the art for an improved technique for load balancing on computing resources among multiple computing devices.